#ifndef __SPI_SOFTSIMU_H
#define __SPI_SOFTSIMU_H
#ifdef __cplusplus
  extern "C" {
#endif


#include "main.h"


/*************************************************** 
  CPOL 0:时钟低电平空闲 1:时钟高电平空闲
  mode0 CPOL=0 CPHA=0 数据在SCK上升沿采样，下降沿变化
  mode1 CPOL=0 CPHA=1 数据在SCK下降沿采样，上升沿变化
  mode2 CPOL=1 CPHA=0 数据在SCK下降沿采样，上升沿变化
  mode3 CPOL=1 CPHA=1 数据在SCK上升沿采样，下降沿变化
***************************************************/
typedef struct
{
  uint8_t       SPI_mode;
  GPIO_TypeDef* CLK_Port;
  uint16_t      CLK_Pin;
  GPIO_TypeDef* CS_Port;
  uint16_t      CS_Pin;
  GPIO_TypeDef* MOSI_Port;
  uint16_t      MOSI_Pin;
  GPIO_TypeDef* MISO_Port;
  uint16_t      MISO_Pin; 
}Soft_SPI;


uint8_t SPI_RW_BYTE(const Soft_SPI* hSSPI, uint8_t data);
void    SPI_WRITE_BUF(const Soft_SPI* hSSPI, uint8_t *pData, int len);


#ifdef __cplusplus
  }
#endif
#endif /* __SPI_SOFTSIMU_H */
